Data communications systems are in common use throughout the world, and have come to be depended upon in fields such as banking and telecommunications. Indeed, data communications is essential in providing many present day services. In many data communications systems, data is transmitted asynchronously, meaning that the transmitting network entity and the receiving network entity are clocked at different rates, or are otherwise independently timed. By network entity it is meant a device that provides data, such as a server or mainframe computer, data routers, or terminals, for example. Additionally, it is often the case that the intended receiving network entity is one of many such network entities capable of receiving information over a common network. Furthermore, data may be routed through several network entities between the transmitting device and the intended receiving device. It is also commonplace that data routers receive data according to one protocol and forward the data according to a second protocol. In such a situation the router buffers information received while reformatting it to forward it to the next network entity.
In most instances the flow of data is controlled by flow characters or messages between the network entities. Typically a sending device will send a data packet and request acknowledgment from the receiving device that the data packet was received intact and in readable form. Some common forms of flow control include hardware local flow control such as RTS and CTS signals between a terminal and a modem, software local flow control such as XON/XOFF characters between a terminal and a modem, message flow control such as receiver ready/receiver not ready (RR/RNR) used in automatic repeat request (ARQ) protocols, to name but a few well practiced methods of performing flow control. While flow control is essential, it typically reduces the average data transfer rate since, instead of continuously transmitting data, the sending device sends a request and waits for acknowledgment. Performing flow control by such conventional means limits the performance of certain real time systems, particularly in telecommunications systems because of this send and wait strategy. Even if the wait time is minimized, flow control signals are transmitted through the same channel as data, thereby reducing the availability of the channel for data transfer. Furthermore this conventional approach to flow control is computing intensive, and impacts the performance of the computing equipment.
In fixed equipment systems, data routers and other network entities can buffer large amounts of data while performing other tasks or waiting for an open channel. In mobile systems, however, this is not always the case. This is because at any given moment, a mobile station such as a cellular telephone, that is receiving data, such as packet data, could hand-off to a new serving cell. The data buffered at the old serving cell would then be lost. Therefore, in mobile systems, it is preferred to keep the amount of buffered data to a minimum. At the same time, however, since wireless data service is typically more expensive than land line data service, it is important to minimize occurrences of data starvation. That is, times when the serving cell's data buffer is empty, and waiting for more data from the system. This suggests that a minimum amount of data should be buffered, but not so much that the data lost after a hand-off is significant.
Given conventional equipment, balancing the opposing goals of minimized buffer depth and avoiding data starvation is difficult at best in mobile data systems. This is in part due to conventional flow control methods which force a significant overhead on data communications channels. Furthermore, data services such as packet data are typically derived from asynchronous networks, while time divisioned telecommunications equipment, as in time division multiple access (TDMA) equipment, use signals in precisely timed frames. This means that data will come in bursts into the telecommunications system. Given that telecommunications signals are designed to transport real time signals (voice traffic), it is necessary to buffer incoming data bursts, thus building the buffer depth, then reducing the buffer over successive frames between data bursts. Adding the constraints of minimizing buffer depth while avoiding data starvation means that conventional flow control just encumbers data channels. Therefore, there is a need for a new method of performing flow control between network entities.